#define TOTALSUPPLYCOUNT 27

//prints gameState to a file
void printGameState(struct gameState *g, FILE *fp);

//sets the seed in a stream
void prepRandom(int strm, int seed);

//returns a random number between min and max, inclusive
//prepRandom must be called one time before using this
int getRandomNumber(int min, int max);

//prints player's info to the console
void printHand(struct gameState *g, int player);
void printDeck(struct gameState *g, int player);
void printDiscard(struct gameState *g, int player);
void printPlayed(struct gameState *g);

//returns the position of the card being searched
// or -1 if not found
int searchHand(struct gameState *g, int player, int card);

//returns a count of how many of a specific card are in a hand
int howManyInHand(struct gameState*g, int player, int card);

//counts how many of a specific card are in a set, returns the number
//set: hand = 1, deck = 2, discard = 3, playedCards = 4, all = 5
//excludes playedCards if not asking for current player
int countCardsInSet(struct gameState *g, int player, int card, int set);

//returns an ARRAY of totals of all cards in deck, discard and hand
//from a specific player
//ignores playedHand if not current player
//which: 1 = hand, 2 = deck, 3 = discard, 4 = playedCards, 5 = all
int *countAllOtherCards(struct gameState *g, int which, int player);

//compares number of cards from two sets
//returns 1 if equal, 0 if not
int compareSupplySet(int *set1, int *set2);

//copies an array
//returns the copy of the array
int copySet(int *array, int *newArray, int length);

//compares to sets of cards to see if equal
//used to be sure that shuffle is actually shuffling
//returns -1 if lengths are different, 0 if values are different
//1 if all values are the same
int compareSet(int *array1, int *array2, int length1, int length2);

void randomizeSupply(struct gameState *g);

void randomizeHands(struct gameState *g);

void randomizeDecks(struct gameState *g);

void randomizeDiscard(struct gameState *g);

void randomizeTurn(struct gameState *g);

void makeRandomGameState(struct gameState *g);

int coinsInHand(struct gameState *g);
